.\" mpstat manual page - (C) 2000-2020 Sebastien Godard (sysstat <at> orange.fr)
.TH MPSTAT 1 "AUGUST 2023" Linux "Linux User's Manual" -*- nroff -*-
.SH NAME
mpstat \- Report processors related statistics.

.SH SYNOPSIS
.B mpstat [ \-A ] [ \-\-dec={ 0 | 1 | 2 } ] [ \-H ] [ \-n ] [ \-u ] [ \-T ] [ \-V ] [ \-I {
.IB "keyword" "[,...] | ALL } ] [ \-N { " "node_list " "| ALL } ] [ \-o JSON ] [ \-P {"
.IB "cpu_list " "| ALL } ] [ " "interval " "[ " "count " "] ]"

.SH DESCRIPTION
.RB "The " "mpstat"
command writes to standard output activities for each available processor,
processor 0 being the first one.
Global average activities among all processors are also reported.
.RB "The " "mpstat"
command can be used on both SMP and UP machines, but in the latter, only global
average activities will be printed. If no activity has been selected, then the
default report is the CPU utilization report.
.PP
.RI "The " "interval"
parameter specifies the amount of time in seconds between each report.
A value of 0 (or no parameters at all) indicates that processors statistics are
to be reported for the time since system startup (boot). The
.IR "count " "parameter can be specified in conjunction with the " "interval"
parameter if this one is not set to zero. The value of
.I count
determines the number of reports generated at
.IR "interval " "seconds apart. If the " "interval"
parameter is specified without the
.IR "count " "parameter, the"
.B mpstat
command generates reports continuously.

.SH OPTIONS
.TP
.B \-A
This option is equivalent to specifying
.BR "\-n \-u \-I ALL" "."
This option also implies specifying
.B "\-N ALL \-P ALL"
unless these options are explicitly set on the command line.
.TP
.B \-\-dec={ 0 | 1 | 2 }
Specify the number of decimal places to use (0 to 2, default value is 2).
.TP
.B \-H
Also detect and display statistics for physically hotplugged vCPUs.
.TP
.BI "\-I { " "keyword" "[,...] | ALL }"
Report interrupts statistics.
.RI "Possible " "keywords " "are"
.BR "CPU" ", " "SCPU" ", and " "SUM" "."
.PP
.RS
.RB "With the " "CPU"
keyword, the number of each individual interrupt received per
second by the CPU or CPUs is displayed. Interrupts are those listed in
.IR "/proc/interrupts " "file."
.PP
.RB "With the " "SCPU"
keyword, the number of each individual software interrupt received per
second by the CPU or CPUs is displayed. This option works only
with kernels 2.6.31 and later. Software interrupts are those listed in
.IR "/proc/softirqs " "file."
.PP
.RB "With the " "SUM " "keyword, the " "mpstat"
command reports the total number of interrupts per processor.
The following values are displayed:

.IP CPU
Processor number. The keyword
.B all
indicates that statistics are calculated as averages among all processors.

.IP intr/s
Show the total number of interrupts received per second by
the CPU or CPUs.
.RE
.IP
.RB "The " "ALL"
keyword is equivalent to specifying all the keywords above and
therefore all the interrupts statistics are displayed.
.TP
.BI "\-N { " "node_list " "| ALL }"
Indicate the NUMA nodes for which statistics are to be reported.
.I node_list
is a list of comma-separated values or range of values (e.g.,
.BR "0,2,4\-7,12\-" "). Note that node " "all"
is the global average among all nodes. The
.B ALL
keyword indicates that statistics are to be reported for all nodes.
.TP
.B \-n
Report summary CPU statistics based on NUMA node placement. The following
values are displayed:
.RS
.IP NODE
Logical NUMA node number. The keyword
.B all
indicates that statistics are calculated as averages among all nodes.
.RE
.IP
All the other fields are the same as those displayed with option
.BR "\-u " "(see below)."
.TP
.B \-o JSON
Display the statistics in JSON (JavaScript Object Notation) format.
JSON output field order is undefined, and new fields may be added
in the future.
.TP
.BI "\-P { " "cpu_list " "| ALL }"
Indicate the processors for which statistics are to be reported.
.I cpu_list
is a list of comma-separated values or range of values (e.g.,
.BR "0,2,4\-7,12\-" ")."
Note that processor 0 is the first processor, and processor
.B all
is the global average among all processors.
.RB "The " "ALL"
keyword indicates that statistics are to be reported for all processors.
Offline processors are not displayed.
.TP
.B \-T
Display topology elements in the CPU report (see option
.B \-u
below). The following elements are displayed:
.RS
.IP CORE
Logical core number.
.IP SOCK
Logical socket number.
.IP NODE
Logical NUMA node number.
.RE
.TP
.B \-u
Report CPU utilization. The following values are displayed:
.RS
.IP CPU
Processor number. The keyword
.I all
indicates that statistics are calculated as averages among all processors.
.IP %usr
Show the percentage of CPU utilization that occurred while
executing at the user level (application).
.IP %nice
Show the percentage of CPU utilization that occurred while
executing at the user level with nice priority.
.IP %sys
Show the percentage of CPU utilization that occurred while
executing at the system level (kernel). Note that this does not
include time spent servicing hardware and software interrupts.
.IP %iowait
Show the percentage of time that the CPU or CPUs were idle during which
the system had an outstanding disk I/O request.
.IP %irq
Show the percentage of time spent by the CPU or CPUs to service hardware interrupts.
.IP %soft
Show the percentage of time spent by the CPU or CPUs to service software interrupts.
.IP %steal
Show the percentage of time spent in involuntary wait by the virtual CPU
or CPUs while the hypervisor was servicing another virtual processor.
.IP %guest
Show the percentage of time spent by the CPU or CPUs to run a virtual processor.
.IP %gnice
Show the percentage of time spent by the CPU or CPUs to run a niced guest.
.IP %idle
Show the percentage of time that the CPU or CPUs were idle and the system
did not have an outstanding disk I/O request.
.RE
.TP
.B \-V
Print version number then exit.

.SH ENVIRONMENT
.RB "The " "mpstat"
command takes into account the following environment variable:
.TP
.B S_COLORS
By default statistics are displayed in color when the output is connected to a terminal.
Use this variable to change the settings. Possible values for this variable are
.IR "never" ", " "always " "or " "auto"
(the latter is equivalent to the default settings).
.br
Please note that the color (being red, yellow, or some other color) used to display a value
is not indicative of any kind of issue simply because of the color. It only indicates different
ranges of values.
.TP
.B S_COLORS_SGR
Specify the colors and other attributes used to display statistics on the terminal.
Its value is a colon-separated list of capabilities that defaults to
.BR "I=32;22:N=34;1:W=35;1:X=31;1:Z=34;22" "."
Supported capabilities are:
.RS
.TP
.B I=
SGR (Select Graphic Rendition) substring for CPU number.
.TP
.B N=
SGR substring for non-zero statistics values.
.TP
.BR "W=" " (or " "M=" ")"
SGR substring for percentage values in the range from 75% to 90% (or in the range 10% to 25% depending on the
metric's meaning).
.TP
.BR "X=" " (or " "H=" ")"
SGR substring for percentage values greater than or equal to 90% (or lower than or equal to 10% depending on the
metric's meaning).
.TP
.B Z=
SGR substring for zero values.
.RE
.TP
.B S_TIME_FORMAT
If this variable exists and its value is
.BR ISO
then the current locale will be ignored when printing the date in the report header.
.RB "The " "mpstat"
command will use the ISO 8601 format (YYYY-MM-DD) instead.
The timestamp will also be compliant with ISO 8601 format.

.SH EXAMPLES
.TP
.B mpstat 2 5
Display five reports of global statistics among all processors at two second intervals.
.TP
.B mpstat \-P ALL 2 5
Display five reports of statistics for all processors at two second intervals.

.SH BUGS
.IR "/proc " "filesystem must be mounted for the"
.BR "mpstat " "command to work."

.SH FILES
.IR "/proc " "contains various files with system statistics."

.SH AUTHOR
Sebastien Godard (sysstat <at> orange.fr)

.SH SEE ALSO
.BR "sar" "(1), " "pidstat" "(1), " "iostat" "(1), " "vmstat" "(8)"
.PP
.I https://github.com/sysstat/sysstat
.br
.I https://sysstat.github.io/
